package com.itheima.springbootregister;

import cn.itcast.pojo.Country;
import com.itheima.anno.EnableCommonConfig;
import com.itheima.config.CommonConfig;
import com.itheima.config.CommonImportSelector;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;

// 导入一个不在包扫描范围内的配置类，相当于手动扫描了指定类，如果需要导入多个配置类，可以使用{}和逗号将需要导入的配置类写在@Import注解中，如@Import({A.class, B.class})，也可以通过导入ImportSelector的实现类实现
//@Import(CommonConfig.class)
// 通过导入ImportSelector的实现类批量导入多个配置类
//@Import(CommonImportSelector.class)
// 使用自定义注解，封装@Import注解
@EnableCommonConfig
@SpringBootApplication
public class SpringbootRegisterApplication {

	public static void main(String[] args) {
		ApplicationContext context = SpringApplication.run(SpringbootRegisterApplication.class, args);

//		Country country = context.getBean(Country.class);
//		System.out.println(country);

		System.out.println(context.getBean("province"));
//		System.out.println(context.getBean("aa"));
	}

	/**
	 * 注册Country对象，在IOC容器中的对象名称就是方法名
	 * 将方法的返回值交给IOC容器管理，成本IOC容器中的bean对象，但不建议将注册第三方对象的代码写在启动类中，应该写一个单独的额配置类进行注册
	 * @return
	 */
//	@Bean
//	public Country country() {
//		return new Country();
//	}

}
